// 题目要求：
// 要求找出一个字符串中所有叠词的个数，例如: abb
// str = abcbcc 中叠词为 abb acc acc acc bcc bcc bcc bcc
// 总共为 8 个

// 解题思路：
// 使用动态规划的思想求解
// 设 dp[i] 表示以 i 位置的字符为结尾的叠词个数
// 要求 dp[i] 的值，假设 i 位置的字符为 x，就需要知道 [0, i - 1] 区间中有多少个 -x，
// 假设用 f[x] 表示 [0, i - 1] 区间上的 -x 数量，dp[i] = f[x]
// 更新完 dp[i] 后，需要更新 f[x] 的值，就需要知道 [0, i - 1] 区间中有多少个 x，刨除 x 的字符，和 i 位置的 x 结合，都可以形成 -x
// 假设用 g[x] 表示 [0, i - 1] 中有多少个 x，f[x] = f[x] + i - g[x]
// 更新完 f[x] 后，更新 g[x]，由于 i 位置的字符是 x，g[x] = g[x] + 1
// 最终将所有的 dp[i] 累加起来即可
// f[x]，g[x] 初始化为 0 即可，随着遍历字符串逐步更新

// 细节：由于字符串的长度较长，因此使用 long 类型来表示叠词的数量，防止超出表示范围

import java.util.*;

public class Abb {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();
        if(n < 3) {
            System.out.println(0);
            return;
        }

        char[] s = in.next().toCharArray();

        //long[] dp = new long[n];
        long[] f = new long[26];
        long[] g = new long[26];

        long count = 0;
        for(int i = 0; i < n; i++){
            int x = s[i] - 'a';
            //dp[i] = f[x];
            count += f[x];

            // 更新哈希表
            f[x] = f[x] + (i - g[x]);
            g[x]++;
        }

        System.out.println(count);
    }
}
